import { createApp } from 'vue'
import './main.css'
import App from './App.vue'
// 引入路由
import router from './router'
// 引入 Pinia
import { createPinia } from 'pinia'
// 引入 axios 并全局挂载
import axios from 'axios'
// 引入 Element Plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)

// 添加全局前置守卫
router.beforeEach((to,from,next)=>{
  const token = localStorage.getItem('token')
  
  // 如果访问的是欢迎页，直接放行
  if (to.path === '/welcome') {
    return next()
  }
  
  // 如果访问的是登录页且已有token，重定向到首页
  if (to.path === '/login' && token) {
    return next('/')
  }

  // 如果访问的是需要认证的页面且没有token，重定向到登录页
  if (to.meta.requiresAuth && !token) {
    return next('/login')
  }
  
  next()
})

// 使用路由
app.use(router)

// 全局挂载 axios
app.config.globalProperties.$axios = axios

// 使用 Pinia
app.use(createPinia())

// 使用 Element Plus
app.use(ElementPlus)

app.mount('#app')
